package cn.kailangtu.myapplication.data;

import android.graphics.Color;
import android.util.Log;
import android.view.View;

import java.util.ArrayList;
import java.util.List;

import cn.kailangtu.myapplication.R;

public class CanDataItemSet {


    private static CanDataItemSet instance = null;

    public static CanDataItemSet getInstance()
    {
        if(instance == null)
        {
            instance =new CanDataItemSet();
        }
        return instance;
    }


    List<List<String>> ls_文字集合 = new ArrayList<>();
    List<List<Integer>> ls_图片集合 = new ArrayList<>();
    List<List<Integer>> ls_颜色集合 = new ArrayList<>();
    List<List<Integer>> ls_显示 = new ArrayList<>();
    List<String> ls_单位 = new ArrayList<>();
    List<List<MatchItem>> ls_值匹配 = new ArrayList<>();
    List<List<CustomItem>> ls_自定义 = new ArrayList<>();
    List<List<SoundItem>> ls_声音 = new ArrayList<>();

    private CanDataItemSet(){
        /*
        根据各系统的不同需求，把集成在这里定义
        ls_文字集合
        ls_图片集合
        ls_颜色集合
        ls_显示
        ls_单位
        ls_自定义格式
         */


        init单位集合();
        init图片集合();
        init文字集合();
        init显示集合();
        init值匹配();
        init自定义格式();
        init声音();
    }

    private void init声音(){
        /**
         * 索引A9S0
         */
        List<SoundItem> ls_转向 = new ArrayList<>();
        SoundItem si_转向_关 = new SoundItem(R.raw.output,View.INVISIBLE);
        SoundItem si_转向_开 = new SoundItem(R.raw.output,View.VISIBLE);
        ls_转向.add(si_转向_关);
        ls_转向.add(si_转向_开);
        ls_声音.add(ls_转向);

    }

    private void init值匹配(){
        /**
         * 索引A7S0
         档位的三个键R,N,D,不在档位时，是灰色42号字体，在档位时，是绿色56号字体
         **/
        List<MatchItem> ls_值匹配_档标 = new ArrayList<>();
        MatchItem si默认 = new MatchItem(-1);
        si默认.set字体颜色(0xFF7F7F7F);
        si默认.set默认(true);
        si默认.set字号(42);
        ls_值匹配_档标.add(si默认);

        MatchItem si档标0 = new MatchItem(0);
        si档标0.set字体颜色(0xFF00FF00); //绿色
        si档标0.set文本("N");
        si档标0.set字号(56);
        ls_值匹配_档标.add(si档标0);

        MatchItem si档标1 = new MatchItem(1);
        si档标1.set字体颜色(0xFF00FF00); //绿色
        si档标1.set文本("P");
        si档标1.set字号(56);
        ls_值匹配_档标.add(si档标1);

        MatchItem si档标5 = new MatchItem(5);
        si档标5.set字体颜色(0xFF00FF00); //绿色
        si档标5.set字号(56);
        ls_值匹配_档标.add(si档标5);

        MatchItem si档标10 = new MatchItem(10);
        si档标10.set字体颜色(0xFF00FF00); //绿色
        si档标10.set字号(56);
        ls_值匹配_档标.add(si档标10);

        ls_值匹配.add(ls_值匹配_档标);
    }

    private void init自定义格式()
    {


        /**
         * 索引A8S0
         * 警告，
         */
        List<CustomItem> ls_自定义格式_警告 = new ArrayList<>();
        CustomItem si警告1 = new CustomItem();
        si警告1.set字体颜色(Color.WHITE);
        si警告1.set文本("正常");
        ls_自定义格式_警告.add(si警告1);

        CustomItem si警告2 = new CustomItem();
        si警告2.set字体颜色(Color.RED);
        si警告2.set文本("警告");
        ls_自定义格式_警告.add(si警告2);


        ls_自定义.add(ls_自定义格式_警告);


        /**
         * 索引A8S1
         * 警告，
         */
        List<CustomItem> ls_自定义格式_READY = new ArrayList<>();
        CustomItem siREADY1 = new CustomItem();
        siREADY1.set字体颜色(Color.RED);
        siREADY1.set文本("WAIT");
        ls_自定义格式_READY.add(siREADY1);

        CustomItem siREADY2 = new CustomItem();
        siREADY2.set字体颜色(Color.GREEN);
        siREADY2.set文本("READY");
        ls_自定义格式_READY.add(siREADY2);


        ls_自定义.add(ls_自定义格式_READY);
    }


    /***
     * 添加新的显示，可从此处添加
     */
    private void init显示集合(){
        /**
         * A6S0
         */
        List<Integer> ls_显示_item = new ArrayList<>();
        ls_显示_item.add(View.VISIBLE);
        ls_显示_item.add(View.GONE);  //不显示，也不占位置
        ls_显示.add(ls_显示_item);

        /**
         * A6S1
         */
        List<Integer> ls_显示_item_1 = new ArrayList<>();
        ls_显示_item_1.add(View.VISIBLE);
        ls_显示_item_1.add(View.INVISIBLE); //不显示，但占位置
        ls_显示.add(ls_显示_item_1);

        /**
         * A6S2
         */
        List<Integer> ls_显示_item_2 = new ArrayList<>();
        ls_显示_item_2.add(View.INVISIBLE);
        ls_显示_item_2.add(View.VISIBLE);
        ls_显示.add(ls_显示_item_2);

        /**
         * A6S3
         */
        List<Integer> ls_显示_item_3 = new ArrayList<>();
        ls_显示_item_3.add(View.INVISIBLE);
        ls_显示_item_3.add(View.GONE);
        ls_显示.add(ls_显示_item_3);
    }


    /***
     * 有新的文字集合，请从此处添加
     */
    private void init文字集合(){
        /**
         * A1S0
         */
        List<String> door_switch_string = new ArrayList<>();
        door_switch_string.add("关");
        door_switch_string.add("开");
        ls_文字集合.add(door_switch_string);

        /**
         * A1S1
         */
        List<String> door_ready_string = new ArrayList<>();
        door_ready_string.add("WAIT");
        door_ready_string.add("READY");
        ls_文字集合.add(door_ready_string);
    }

    /***
     * 有新的单位，请从此处添加
     */
    private void init单位集合()
    {
        ls_单位.add("°C"); //U0
        ls_单位.add("V");  //U1
        ls_单位.add("A");  //U2
        ls_单位.add("%");  //U3
    }

    /***
     * 有新的图片集合，请从此处添加
     */
    private void init图片集合()
    {
        /**
         * A2S0
         * A3S0
         */
        List<Integer> light_switch = new ArrayList<>();
        light_switch.add(R.drawable.light_off);
        light_switch.add(R.drawable.light_on_i);
        light_switch.add(R.drawable.light_on_ii);
        light_switch.add(R.drawable.light_on_iii);
        ls_图片集合.add(light_switch);


        /**
         * A2S1
         * A3S1
         */
        List<Integer> door_switch = new ArrayList<>();
        door_switch.add(R.drawable.door_close);
        door_switch.add(R.drawable.door_open);
        ls_图片集合.add(door_switch);
    }

    public List<String> get文字集合(int index){
        if(ls_文字集合.size() > index)
        {
            return ls_文字集合.get(index);
        }
        return null;
    }


    public List<Integer> get图片集合(int index){
        if(ls_图片集合.size() > index)
        {
            return ls_图片集合.get(index);
        }
        return null;
    }

    public List<Integer> get颜色集合(int index){
        if(ls_颜色集合.size() > index)
        {
            return ls_颜色集合.get(index);
        }
        return null;
    }

    public List<Integer> get显示(int index)
    {

        if(ls_显示.size() > index)
        {

            return ls_显示.get(index);
        }

        return null;
    }

    public String get单位(int index){
        if(ls_单位.size() > index)
        {
            return ls_单位.get(index);
        }
        return "";
    }

}
